#pragma once
#include <Rz/Object.h>
#include "IDeviceResource.h"
#include "../Math/BoundingBox.h"

RZ_CLASS_FWD_DECL3(Rz, Graphics, Render, IRenderDevice);
RZ_CLASS_FWD_DECL3(Rz, Graphics, Render, IVertexArray);

namespace Rz { namespace Graphics { namespace Render {

class Geometry :
	public Object,
	public IDeviceResource
{
	public:
		RZ_RTTI(Rz::Graphics::Render, Geometry);
		RZ_RTTI_IMPLEMENTS(Object);
		RZ_RTTI_END;

		Geometry(IRenderDevice* renderDevice);

		const IVertexArray*  GetVertexArray() const;
		IVertexArray*		 GetVertexArray();

		const Math::BoundingBox& GetBoundingBox() const;
		void SetBoundingBox(const Math::BoundingBox& boundingBox);
		
	private:
		Ptr<IVertexArray>  _vertexArray;

		Math::BoundingBox _boundingBox;
};

} } }
